﻿using System;
using System.Runtime.Serialization;
namespace DKE_Kinect.Entwicklung.Core
{
    /// <summary>
    /// Klasse für projektspezifische Einstellungen
    /// </summary>
    [Serializable()]
    public class Projekt : ISerializable
    {
        //TODO 
        // User spezifische Daten einpflegen und das volumen über den PolyVoxManager mitspeichern
        private String pName;
        private String pVolumeName;
      //  private Texture2D pPalette;
      //  private Byte4[] pData;

        /// <summary>
        /// Initializes a new instance of the <see cref="Projekt"/> class.
        /// </summary>
        /// <param name="name">The name.</param>
        public Projekt(String name)
        {
            pName = name;
            pVolumeName = name + "Volume";
            Application.PolyvoxManager.Reset();
       //    pPalette= ContentManager.loadContent<Texture2D>("textures/colorPalette");
       //    pData = new Byte4[pPalette.Width * pPalette.Height];
       //   pPalette.GetData<Byte4>(pData);
           
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="Projekt"/> class.
        /// </summary>
        /// <param name="info">The info.</param>
        /// <param name="context">The context.</param>
        public Projekt(SerializationInfo info, StreamingContext context)
        {
            pName = info.GetString("name");
            pVolumeName = info.GetString("vname");
       //     pData = (Byte4[])info.GetValue("data", typeof(Byte4[]));
        //    pPalette.SetData<Byte4>(pData);
        //    Application.PolyvoxManager.SetColorPalette(pPalette);
        //    Application.PolyvoxManager.LoadVolume(pVolumeName);
        }
        #region ISerializable Member

        /// <summary>
        /// Füllt eine <see cref="T:System.Runtime.Serialization.SerializationInfo"/> mit den Daten, die zum Serialisieren des Zielobjekts erforderlich sind.
        /// </summary>
        /// <param name="info">Die mit Daten zu füllende <see cref="T:System.Runtime.Serialization.SerializationInfo"/>.</param>
        /// <param name="context">Das Ziel (siehe <see cref="T:System.Runtime.Serialization.StreamingContext"/>) dieser Serialisierung.</param>
        /// <exception cref="T:System.Security.SecurityException">Der Aufrufer verfügt nicht über die erforderliche Berechtigung. </exception>
        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("name", pName);
            info.AddValue("vname", pVolumeName);
      //      info.AddValue("texture", pPalette);
        }

        #endregion
    }
}
